package com.zjcloud.jwgl.domain;

import java.util.Date;
import java.math.BigDecimal;
import com.fasterxml.jackson.annotation.JsonFormat;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
import com.zjcloud.common.annotation.Excel;
import com.zjcloud.common.core.domain.BaseEntity;

/**
 * 排课结果对象 sc_schedule_result
 * 
 * @author zjcloud
 * @date 2024-12-19
 */
public class ScScheduleResult extends BaseEntity
{
    private static final long serialVersionUID = 1L;

    /** 排课结果ID */
    private Long id;

    /** 排课任务ID */
    @Excel(name = "排课任务ID")
    private Long taskId;

    /** 任务名称 */
    @Excel(name = "任务名称")
    private String taskName;

    /** 学期ID */
    @Excel(name = "学期ID")
    private Long semesterId;

    /** 学期名称 */
    @Excel(name = "学期名称")
    private String semesterName;

    /** 课程ID */
    @Excel(name = "课程ID")
    private Long courseId;

    /** 课程名称 */
    @Excel(name = "课程名称")
    private String courseName;

    /** 课程编码 */
    @Excel(name = "课程编码")
    private String courseCode;

    /** 学科ID */
    @Excel(name = "学科ID")
    private Long subjectId;

    /** 学科名称 */
    @Excel(name = "学科名称")
    private String subjectName;

    /** 年级ID */
    @Excel(name = "年级ID")
    private Long gradeId;

    /** 年级名称 */
    @Excel(name = "年级名称")
    private String gradeName;

    /** 班级ID */
    @Excel(name = "班级ID")
    private Long classId;

    /** 班级名称 */
    @Excel(name = "班级名称")
    private String className;

    /** 教师ID */
    @Excel(name = "教师ID")
    private Long teacherId;

    /** 教师姓名 */
    @Excel(name = "教师姓名")
    private String teacherName;

    /** 教室ID */
    @Excel(name = "教室ID")
    private Long classroomId;

    /** 教室名称 */
    @Excel(name = "教室名称")
    private String classroomName;

    /** 时间段ID */
    @Excel(name = "时间段ID")
    private Long timeSlotId;

    /** 时间段名称 */
    @Excel(name = "时间段名称")
    private String timeSlotName;

    /** 星期几(1-7) */
    @Excel(name = "星期几")
    private Integer dayOfWeek;

    /** 星期名称 */
    @Excel(name = "星期名称")
    private String dayName;

    /** 节次 */
    @Excel(name = "节次")
    private Integer period;

    /** 开始时间 */
    @JsonFormat(pattern = "HH:mm")
    @Excel(name = "开始时间", width = 30, dateFormat = "HH:mm")
    private Date startTime;

    /** 结束时间 */
    @JsonFormat(pattern = "HH:mm")
    @Excel(name = "结束时间", width = 30, dateFormat = "HH:mm")
    private Date endTime;

    /** 课时长度(分钟) */
    @Excel(name = "课时长度")
    private Integer duration;

    /** 周次范围 */
    @Excel(name = "周次范围")
    private String weekRange;

    /** 是否连排(1是 0否) */
    @Excel(name = "是否连排", readConverterExp = "1=是,0=否")
    private String isContinuous;

    /** 连排序号 */
    @Excel(name = "连排序号")
    private Integer continuousOrder;

    /** 连排组ID */
    @Excel(name = "连排组ID")
    private String continuousGroupId;

    /** 排课类型(AUTO自动排课 MANUAL手动排课 ADJUSTED调整排课) */
    @Excel(name = "排课类型", readConverterExp = "AUTO=自动排课,MANUAL=手动排课,ADJUSTED=调整排课")
    private String scheduleType;

    /** 排课状态(SCHEDULED已排课 CONFIRMED已确认 PUBLISHED已发布 CANCELLED已取消) */
    @Excel(name = "排课状态", readConverterExp = "SCHEDULED=已排课,CONFIRMED=已确认,PUBLISHED=已发布,CANCELLED=已取消")
    private String scheduleStatus;

    /** 优先级(1-10) */
    @Excel(name = "优先级")
    private Integer priority;

    /** 质量评分 */
    @Excel(name = "质量评分")
    private BigDecimal qualityScore;

    /** 满意度评分 */
    @Excel(name = "满意度评分")
    private BigDecimal satisfactionScore;

    /** 冲突等级(NONE无冲突 LOW低冲突 MEDIUM中冲突 HIGH高冲突) */
    @Excel(name = "冲突等级", readConverterExp = "NONE=无冲突,LOW=低冲突,MEDIUM=中冲突,HIGH=高冲突")
    private String conflictLevel;

    /** 约束违反数量 */
    @Excel(name = "约束违反数量")
    private Integer violationCount;

    /** 调整次数 */
    @Excel(name = "调整次数")
    private Integer adjustmentCount;

    /** 最后调整时间 */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @Excel(name = "最后调整时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
    private Date lastAdjustmentTime;

    /** 调整原因 */
    @Excel(name = "调整原因")
    private String adjustmentReason;

    /** 确认人 */
    @Excel(name = "确认人")
    private String confirmedBy;

    /** 确认时间 */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @Excel(name = "确认时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
    private Date confirmedTime;

    /** 发布时间 */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @Excel(name = "发布时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
    private Date publishedTime;

    /** 备注信息 */
    @Excel(name = "备注信息")
    private String notes;

    /** 状态(1有效 0无效) */
    @Excel(name = "状态", readConverterExp = "1=有效,0=无效")
    private String status;

    public void setId(Long id) 
    {
        this.id = id;
    }

    public Long getId() 
    {
        return id;
    }
    public void setTaskId(Long taskId) 
    {
        this.taskId = taskId;
    }

    public Long getTaskId() 
    {
        return taskId;
    }
    public void setTaskName(String taskName) 
    {
        this.taskName = taskName;
    }

    public String getTaskName() 
    {
        return taskName;
    }
    public void setSemesterId(Long semesterId) 
    {
        this.semesterId = semesterId;
    }

    public Long getSemesterId() 
    {
        return semesterId;
    }
    public void setSemesterName(String semesterName) 
    {
        this.semesterName = semesterName;
    }

    public String getSemesterName() 
    {
        return semesterName;
    }
    public void setCourseId(Long courseId) 
    {
        this.courseId = courseId;
    }

    public Long getCourseId() 
    {
        return courseId;
    }
    public void setCourseName(String courseName) 
    {
        this.courseName = courseName;
    }

    public String getCourseName() 
    {
        return courseName;
    }
    public void setCourseCode(String courseCode) 
    {
        this.courseCode = courseCode;
    }

    public String getCourseCode() 
    {
        return courseCode;
    }
    public void setSubjectId(Long subjectId) 
    {
        this.subjectId = subjectId;
    }

    public Long getSubjectId() 
    {
        return subjectId;
    }
    public void setSubjectName(String subjectName) 
    {
        this.subjectName = subjectName;
    }

    public String getSubjectName() 
    {
        return subjectName;
    }
    public void setGradeId(Long gradeId) 
    {
        this.gradeId = gradeId;
    }

    public Long getGradeId() 
    {
        return gradeId;
    }
    public void setGradeName(String gradeName) 
    {
        this.gradeName = gradeName;
    }

    public String getGradeName() 
    {
        return gradeName;
    }
    public void setClassId(Long classId) 
    {
        this.classId = classId;
    }

    public Long getClassId() 
    {
        return classId;
    }
    public void setClassName(String className) 
    {
        this.className = className;
    }

    public String getClassName() 
    {
        return className;
    }
    public void setTeacherId(Long teacherId) 
    {
        this.teacherId = teacherId;
    }

    public Long getTeacherId() 
    {
        return teacherId;
    }
    public void setTeacherName(String teacherName) 
    {
        this.teacherName = teacherName;
    }

    public String getTeacherName() 
    {
        return teacherName;
    }
    public void setClassroomId(Long classroomId) 
    {
        this.classroomId = classroomId;
    }

    public Long getClassroomId() 
    {
        return classroomId;
    }
    public void setClassroomName(String classroomName) 
    {
        this.classroomName = classroomName;
    }

    public String getClassroomName() 
    {
        return classroomName;
    }
    public void setTimeSlotId(Long timeSlotId) 
    {
        this.timeSlotId = timeSlotId;
    }

    public Long getTimeSlotId() 
    {
        return timeSlotId;
    }
    public void setTimeSlotName(String timeSlotName) 
    {
        this.timeSlotName = timeSlotName;
    }

    public String getTimeSlotName() 
    {
        return timeSlotName;
    }
    public void setDayOfWeek(Integer dayOfWeek) 
    {
        this.dayOfWeek = dayOfWeek;
    }

    public Integer getDayOfWeek() 
    {
        return dayOfWeek;
    }
    public void setDayName(String dayName) 
    {
        this.dayName = dayName;
    }

    public String getDayName() 
    {
        return dayName;
    }
    public void setPeriod(Integer period) 
    {
        this.period = period;
    }

    public Integer getPeriod() 
    {
        return period;
    }
    public void setStartTime(Date startTime) 
    {
        this.startTime = startTime;
    }

    public Date getStartTime() 
    {
        return startTime;
    }
    public void setEndTime(Date endTime) 
    {
        this.endTime = endTime;
    }

    public Date getEndTime() 
    {
        return endTime;
    }
    public void setDuration(Integer duration) 
    {
        this.duration = duration;
    }

    public Integer getDuration() 
    {
        return duration;
    }
    public void setWeekRange(String weekRange) 
    {
        this.weekRange = weekRange;
    }

    public String getWeekRange() 
    {
        return weekRange;
    }
    public void setIsContinuous(String isContinuous) 
    {
        this.isContinuous = isContinuous;
    }

    public String getIsContinuous() 
    {
        return isContinuous;
    }
    public void setContinuousOrder(Integer continuousOrder) 
    {
        this.continuousOrder = continuousOrder;
    }

    public Integer getContinuousOrder() 
    {
        return continuousOrder;
    }
    public void setContinuousGroupId(String continuousGroupId) 
    {
        this.continuousGroupId = continuousGroupId;
    }

    public String getContinuousGroupId() 
    {
        return continuousGroupId;
    }
    public void setScheduleType(String scheduleType) 
    {
        this.scheduleType = scheduleType;
    }

    public String getScheduleType() 
    {
        return scheduleType;
    }
    public void setScheduleStatus(String scheduleStatus) 
    {
        this.scheduleStatus = scheduleStatus;
    }

    public String getScheduleStatus() 
    {
        return scheduleStatus;
    }
    public void setPriority(Integer priority) 
    {
        this.priority = priority;
    }

    public Integer getPriority() 
    {
        return priority;
    }
    public void setQualityScore(BigDecimal qualityScore) 
    {
        this.qualityScore = qualityScore;
    }

    public BigDecimal getQualityScore() 
    {
        return qualityScore;
    }
    public void setSatisfactionScore(BigDecimal satisfactionScore) 
    {
        this.satisfactionScore = satisfactionScore;
    }

    public BigDecimal getSatisfactionScore() 
    {
        return satisfactionScore;
    }
    public void setConflictLevel(String conflictLevel) 
    {
        this.conflictLevel = conflictLevel;
    }

    public String getConflictLevel() 
    {
        return conflictLevel;
    }
    public void setViolationCount(Integer violationCount) 
    {
        this.violationCount = violationCount;
    }

    public Integer getViolationCount() 
    {
        return violationCount;
    }
    public void setAdjustmentCount(Integer adjustmentCount) 
    {
        this.adjustmentCount = adjustmentCount;
    }

    public Integer getAdjustmentCount() 
    {
        return adjustmentCount;
    }
    public void setLastAdjustmentTime(Date lastAdjustmentTime) 
    {
        this.lastAdjustmentTime = lastAdjustmentTime;
    }

    public Date getLastAdjustmentTime() 
    {
        return lastAdjustmentTime;
    }
    public void setAdjustmentReason(String adjustmentReason) 
    {
        this.adjustmentReason = adjustmentReason;
    }

    public String getAdjustmentReason() 
    {
        return adjustmentReason;
    }
    public void setConfirmedBy(String confirmedBy) 
    {
        this.confirmedBy = confirmedBy;
    }

    public String getConfirmedBy() 
    {
        return confirmedBy;
    }
    public void setConfirmedTime(Date confirmedTime) 
    {
        this.confirmedTime = confirmedTime;
    }

    public Date getConfirmedTime() 
    {
        return confirmedTime;
    }
    public void setPublishedTime(Date publishedTime) 
    {
        this.publishedTime = publishedTime;
    }

    public Date getPublishedTime() 
    {
        return publishedTime;
    }
    public void setNotes(String notes) 
    {
        this.notes = notes;
    }

    public String getNotes() 
    {
        return notes;
    }
    public void setStatus(String status) 
    {
        this.status = status;
    }

    public String getStatus() 
    {
        return status;
    }

    @Override
    public String toString() {
        return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
            .append("id", getId())
            .append("taskId", getTaskId())
            .append("taskName", getTaskName())
            .append("semesterId", getSemesterId())
            .append("semesterName", getSemesterName())
            .append("courseId", getCourseId())
            .append("courseName", getCourseName())
            .append("courseCode", getCourseCode())
            .append("subjectId", getSubjectId())
            .append("subjectName", getSubjectName())
            .append("gradeId", getGradeId())
            .append("gradeName", getGradeName())
            .append("classId", getClassId())
            .append("className", getClassName())
            .append("teacherId", getTeacherId())
            .append("teacherName", getTeacherName())
            .append("classroomId", getClassroomId())
            .append("classroomName", getClassroomName())
            .append("timeSlotId", getTimeSlotId())
            .append("timeSlotName", getTimeSlotName())
            .append("dayOfWeek", getDayOfWeek())
            .append("dayName", getDayName())
            .append("period", getPeriod())
            .append("startTime", getStartTime())
            .append("endTime", getEndTime())
            .append("duration", getDuration())
            .append("weekRange", getWeekRange())
            .append("isContinuous", getIsContinuous())
            .append("continuousOrder", getContinuousOrder())
            .append("continuousGroupId", getContinuousGroupId())
            .append("scheduleType", getScheduleType())
            .append("scheduleStatus", getScheduleStatus())
            .append("priority", getPriority())
            .append("qualityScore", getQualityScore())
            .append("satisfactionScore", getSatisfactionScore())
            .append("conflictLevel", getConflictLevel())
            .append("violationCount", getViolationCount())
            .append("adjustmentCount", getAdjustmentCount())
            .append("lastAdjustmentTime", getLastAdjustmentTime())
            .append("adjustmentReason", getAdjustmentReason())
            .append("confirmedBy", getConfirmedBy())
            .append("confirmedTime", getConfirmedTime())
            .append("publishedTime", getPublishedTime())
            .append("notes", getNotes())
            .append("status", getStatus())
            .append("createBy", getCreateBy())
            .append("createTime", getCreateTime())
            .append("updateBy", getUpdateBy())
            .append("updateTime", getUpdateTime())
            .append("remark", getRemark())
            .toString();
    }
}